The exchange of information between workers both within an organisation and between organisations using networks of computers is now commonplace. Increased use of networking and increased reliability and performance of networking and distribution systems has increased workers' efficiency by enabling fast access to shared data and has increased the cost effectiveness of data processing resources (e.g. by making expensive I/O devices available to a plurality of users in the network).
Networking has enabled data and processes to be distributed among data processing stations and to be located at whatever site within the network is most efficient. For example, locating some data near to the processes which access and update it, and locating certain processes at end user workstations, can reduce data traffic across the network; whereas storing at a central location a large database which is remotely accessed by a large number of users can simplify maintenance of consistency and provision of security. There is now a wide business requirement to be able to exploit the advantages of LANs and workstations without all data having to be dispersed to distributed systems, since the data management tasks such as provision of security and backup enterprise-wide access are much more expensive to achieve with distributed data than with centralised data.
A data processing model which provides advantages for distributed environments is client-server computing, in which `client` programs send requests to one or more `server` programs (which may be on a different system) and receive shared services from the server. A single business application may be distributed across multiple network sites and involve both client and server programs.
An application whose logic is distributed either geographically or over a plurality of processors (that is, a distributed application (DA) comprising a plurality of Application Programs (DAPs)) must deal with technical problems which do not arise with non-distributed applications (NDA's). These problems include communications between the disparate parts of the application, and how to deal with failures or unsatisfactory performance of remote systems or remote parts of the application.
One known approach to addressing these problems is to use a Distributed Application Infrastructure (DAI) which provides services that mask the fact that communication is taking place within a distributed application making the DA appear to be a NDA to programmers and end users. This approach is used when Remote Procedure Call is used for communication. The use of such a DAI is intended to simplify application programming. However, in a NDA problems such as system failure affect the entire application (or none of it) so that the entire application is halted, whereas problems in one Application Program (DAP) within a DA can theoretically be masked from end users of the application by code within other DAP's which have not failed. The effectiveness of such masking depends on the role of the DAP which has problems. A significant technical problem here is that the pretence of non-distribution (when a DA is made to appear as an NDA) prevents this masking of problems from taking place. Furthermore, the inclusion of masking code within an application program adds considerable complexity to the mainline application program code, making the task of application programming more difficult.
The following are examples of situations in which masking of error conditions is desirable:
In an application involving a series of operations culminating in a final update of a database, the final update could be deferred without impacting the end user if a communications failure temporarily prevented the update request from reaching the database. PA0 In a retail application, the normal credit check could be waived if the credit checking system was temporarily inaccessible, provided the price of the goods being sold was below a predetermined amount.
Required is a method and a system which enables efficient handling of error conditions and `masking` of errors within a Distributed Application. Also required is a method and a system which facilitates masking of problems without requiring very complex application programs. More generally, although computer programs having support facilities for inter-program communication are known in the art, the function of such programs tends to be to transfer information rather than to additionally provide support for the processing of that information. Commercial messaging software such as IBM's MQSeries products (described below) is known to provide facilities enabling application programs to send and receive messages, but the processing of the messages is left for the application programs themselves. Thus, application programs generally must include the necessary instructions to enable processing of all incoming messages, including instructions for processing messages which raise error conditions or require non-standard processing for some other reason. For example, when a message arrives late it may be required to perform a different process than when a message arrives on time (e.g. notifying the sender that a late request will not be complied with).
(IBM and MQSeries are trade marks of International Business Machines Corporation).
There are many conditions other than late receipt which may necessitate certain messages being processed differently from other messages. For example, it may be desirable to delay processing of a message until a specified number of related messages have arrived; or different states of an application program instance may necessitate different actions.
Dealing with the special cases of error conditions, and other factors which make it desirable to process different messages in different ways, is a difficult aspect of application programming--adding both to the time required for the programming task and to the complexity of the final programming code.
There is thus a requirement for a method and a system which enables efficient handling of error conditions and other criteria which necessitate different processing of different types of message, while reducing the complexity of the application programming.